# 导入llama_index核心模块中的StorageContext、load_index_from_storage、VectorStoreIndex和Document类
from llama_index.core import (
    StorageContext,
    load_index_from_storage,
    VectorStoreIndex,
    Document,
)

# 构建一个包含三条示例文本的列表，用于后续演示
# sample_texts = [
#    "LlamaIndex是一个强大的数据框架，用于构建LLM应用。",
#    "持久化存储可以避免重复计算嵌入向量，节省时间和成本。",
#    "通过存储索引，可以快速加载和重用已处理的数据。",
# ]

# 将每条文本包装成Document对象，便于后续索引处理
# documents = [Document(text=text) for text in sample_texts]

# 基于文档列表创建向量索引
# index = VectorStoreIndex.from_documents(documents)
# 将索引的存储上下文指定到指定目录./index_storage
# index.storage_context.persist(persist_dir="./index_storage")
# --------------------------
# 通过from_defaults方法从指定目录重建存储上下文
storage_context = StorageContext.from_defaults(persist_dir="./index_storage")
# 利用重建的存储上下文，从磁盘加载已持久化的向量索引
index = load_index_from_storage(storage_context)
query_engine = index.as_query_engine()
response = query_engine.query("什么是LlamaIndex？")
print(response)
